VB 加油站VB 讨论

最近更新

加油站台

下载区域

VB 网链

写流言

瞧瞧流言

友情连接

写信给俺啦

 

VB 访 问 数 据 库 的 方 案 比 较

 

用Visual Basic 访 问 数 据 库 有 许 多 可 供 选 择 的 方 案, 但 是 选 择 那 种 方 案 更 能 使 开 发 队 伍 和 应 用 软 件 在 当 前 处 于 有 利 位 置 并 且 适 应 将 来 的 发 展 方 向 呢 ? 这 些 解 决 方 案 各 有 什 么 特 点 ? 本 文 将 说 明 这 些 问 题, 帮 助 使 用VB5 的 用 户 和 准 备 使 用VB5 的 用 户 选 择 和 决 定 数 据 库 访 问 方 案。

---- 当 今,RDO2.0 是Visual Basic 访 问 关 系 型ODBC 数 据 源 的 最 佳 界 面 接 口, 就 如DAO/Jet 是Jet 和ISAM( 顺 序 索 引 查 找 方 法) 类 型 数 据 源 首 选 的 访 问 接 口 一 样。 这 两 种 方 法 都 完 整 地 集 成 于Visual Basic 中, 并 且 形 成 了Visual Basic 核 心 的 数 据 访 问 策 略。RDO2.0 的 数 据 访 问 速 度 远 快 于RDO1.0 的 访 问 速 度, 并 且RDO 和DAO 都 已 发 展 为 相 当 成 熟 的 技 术。 因 此 假 如 用 户 需 要 访 问ODBC 数 据 源, 可 以 使 用RDO; 如 果 需 要 访 问ISAM 或Jet 类 型 数 据 源, 那 么 就 使 用DAO/Jet。

---- Active Data Objects(ADO) 作 为 另 一 种 可 供 选 择 的 技 术 出 现, 正 在 逐 渐 代 替 其 他 数 据 访 问 接 口。 由 于RDO 同ADO 的 体 系 结 构 非 常 相 似, 因 此 当 需 要 将RDO 数 据 接 口 转 换 为ADO 时, 仍 可 以 使 用RDO 设 计 的 代 码。

---- 有 人 曾 提 出 这 样 的 问 题: 是 否 现 在 就 使 用ADO? 虽 然VB5 使 用ADO 的 数 据 访 问 接 口 是 可 能 的, 但 对 于 目 前ADO 的 使 用 状 况, 将RDO2.0 或DAO3.5 同ADO 做 比 较 显 得 意 义 并 不 很 大。 所 以 回 答 是: 如 果 感 觉 方 便, 还 是 尽 早 转 移 到ADO, 这 意 味 着 应 用 软 件 对 各 种 数 据 访 问 接 口 将 继 续 予 以 支 持。ADO 是 独 立 于 开 发 工 具 和 开 发 语 言 的 简 单 而 且 容 易 使 用 的 数 据 接 口, 同ADO 相 比, 其 他 数 据 访 问 接 口 都 会 黯 然 失 色。

---- 所 有 的 数 据 源 都 可 以 通 过ADO 来 访 问, 在 今 天 已 逐 渐 成 为 现 实。

VB 访 问 数 据 库 技 术 的 历 史

---- 综 观 过 去 几 年, 使 用Visual Basic 的 客 户 曾 设 计 出 数 不 胜 数 的 程 序 和 组 件 来 建 立 商 务 解 决 方 案。 大 约80 % 以 上 的 应 用 程 序 是 用 来 访 问 以 下 这 些 数 据 的:ASCII 文 本 文 件、SQL 数 据 库 以 及 大 型 机 数 据 库。 早 期 的Visual Basic 数 据 访 问 工 具 只 是 简 单 的ASCII 文 件 的 访 问 工 具, 极 少 数SQL Server 的 前 端 应 用 程 序 是 使 用 鲜 为 人 知 的 数 据 接 口VBSQL 编 写 的。 然 而, 在Visual Basic 3.0 时 代 许 多 用 户 强 调 需 转 移 访 问 包 含 远 程 数 据 源 的ISAM 数 据, 为 此Microsoft 设 计 了Microsoft Jet Database Engine ( 或 简 称 为Jet) 和Data Access Object(DAO), 使 得Visual Basic Access 开 发 人 员 很 容 易 地 同Jet 接 口。 直 至 前 两 年, 对Visual Basic 和 其 使 用 者 的 需 求 又 包 含 了 更 快 的 访 问 远 程 数 据 和 对ODBC 数 据 源 访 问 的 优 化。

---- 当 讨 论 哪 种 技 术 是 最 佳 技 术 时, 需 要 注 意 两 点: 代 码 的 重 用 和 开 发 者 实 现 所 选 择 的 数 据 库 访 问 方 案 的 能 力。 设 计 者 常 常 为 实 现 或 追 求 一 种 更 特 别 的 性 能 而 使 用 有 更 多 控 件 的 奇 异 方 案, 这 样 设 计 出 来 的 应 用 程 序 只 会 支 持 起 来 更 复 杂 或 维 护 时 更 困 难。 开 发 人 员 和 他 们 的 管 理 人 员 需 要 在Visual Basic 的 开 发 小 组 和 各 种 数 据 库 接 口 开 发 小 组 中 注 意 避 免 这 种 趋 势。 这 些 小 组 协 调 努 力 简 化VB5 中 的 数 据 访 问 接 口 会 使 程 序 的 安 全 性 和 速 度 更 好。VB5 也 包 含 了 全 新 的 查 询 连 接 生 成 器, 即 User Connection 设 计 器, 它 使 用 Visual Basic 新 的 ActiveX 设 计 器 体 系 结 构, 对 要 编 程 的 数 据 访 问 提 供 设 计 时 的 支 持。 允 许 在 设 计 时 创 建 连 接 和 查 询 对 象( 基 于 RDO rdoConnection 和 rdoQuery 对 象), 并 把 这 些 连 接 和 查 询 对 象 当 作 工 程 级 对 象, 可 预 先 设 置 属 性、 定 义 新 属 性 和 方 法 并 给 对 象 编 写 代 码 来 捕 捉 事 件。

---- 这 不 仅 为 响 应 由 连 接 和 查 询 而 引 起 的 事 件, 而 且 为 在 运 行 时 调 用 已 有 存 储 过 程 和 用 户 定 义 的 查 询 提 供 了 简 单 的 方 法。 使 用User Connection 设 计 器 这 种 技 术, 代 码 可 减 少10 倍, 性 能 却 没 有 任 何 损 失。

---- 现 在 用VB5 来 建 服 务 器 端 组 件 或 前 端 应 用 程 序, 可 以 使 用 的 数 据 库 接 口 方 案 至 少 有 九 种。 每 一 种 方 案 都 可 满 足 用 户 特 定 的 需 要, 比 如 特 殊 的 数 据 源 和 用 户 开 发 的 技 能 等。

Visual Basic 访 问 数 据 库 的 现 状

下 面 的 表 格( 表 一) 列 出 了 目 前 在VB5 中 有 效 的 数 据 访 问 接 口 方 法, 一 部 分 是 简 单 的 应 用 程 序 接 口 界 面(APIs), 但 大 部 分 是 组 件 对 象 模 型 界 面(COM)。 这 两 类 数 据 库 接 口 界 面 事 实 上 在 任 何 一 种 开 发 语 言 中 都 包 括。

表 一

接口界面 访问对象 16/32位支持
VBSQL 通过DB-Library访问微软的SQL Server 16位和32位
DAO/Jet 本地的Jet/Access.MDB、顺序索引数据库(ISAM)和任何ODBC数据源。 16位和32位
DAO/ODBC Direct 任何一种ODBC数据源(经过RDO) 32位
RDO 2.0 任何一种ODBC数据源(Level I或II) 32位
ADO* 任何一种ODBC数据源和任何经过OLE DB界面接口的数据源 32位

---- *ADO 不 包 括 在VB5 中, 目 前 的 许 多 网 络 产 品 支 持ADO 如:IIS、Visual Studio 等, 也 会 发 行 在VB 的 下 一 版 本VB6 中。

---- 上 表 列 出 了 用VB5 程 序 代 码 访 问 数 据 库 的 几 种 接 口 界 面, 但 是 许 多 开 发 人 员 也 使 用 一 些 数 据 库 绑 定 的 控 件 来 实 现 一 些 简 单 重 复 的 功 能, 如: 用 户 数 据 的 输 入、 显 示、 筛 选 等 接 口 界 面。VB 也 支 持 对 多 种 数 据 源 访 问 的 控 件, 这 些 控 件 在VB 和COM 界 面 接 口 之 间 起 着 媒 介 作 用。 这 些 控 件 提 供 了 一 种 减 少 代 码 实 现 数 据 访 问 的 途 径, 该 方 法 简 化 了 代 码 并 使 程 序 员 不 必 亲 自 处 理 检 索 和 更 新 数 据 的 底 层 结 构 和 机 制。 它 赋 予 程 序 员 很 大 的 灵 活 性, 因 为 可 以 使 用 同 样 的 对 象、 属 性 和 方 法 来 处 理 各 种 不 同 的 数 据 库 格 式。 同 时, 如 果 从 一 种 数 据 库 格 式 变 到 另 一 种 格 式( 例 如, 将 本 地 的 Microsoft Access 数 据 库 转 换 为 网 络 上 的 SQL Server 数 据 库), 只 需 变 动 少 量 的 代 码 就 可 以 适 应 这 种 改 变。 甚 至 可 以 创 建 这 样 的 应 用 程 序, 在 单 一 的 查 询 或 报 表 中 连 接 来 自 多 个 不 同 数 据 库 的 表。

表 二

数据绑定控件 访问对象 16/32位支持
Data Corolor DAO/Jet数据界面接口 16位和32位
Data Control/ODBC Direct DAO/ODBC Direct数据界面接口 32位
RemoteData Control/RDC RDO数据界接口 32位
Advanced Data Connector/ADC* ADO数据界面接口 32位

---- *ADO 不 包 括 在VB5 中, 目 前 的 许 多 网 络 产 品 支 持ADO 如:IIS、Visual Studio 等, 也 会 发 行 在VB 的 下 一 版 本VB6 中。

---- 经 过 数 年 发 展,ODBC 技 术 日 臻 完 善, 已 成 为 访 问 远 程 数 据 的 主 要 方 法, 而Jet 成 为 本 地Jet 和ISAM 数 据 接 口 的 首 选 方 案。 虽 然 这 些 方 法 在 不 同 程 度 上 有 功 能 交 迭 的 地 方, 在 论 证 选 用 数 据 库 访 问 的 方 法 时, 主 要 还 应 满 足 用 户 在 特 殊 应 用 程 序 中 对 具 体 数 据 接 口 的 访 问。

---- 并 不 是 所 有 人 对 数 据 访 问 中 的 一 些 缩 写 词 都 了 解。 表 三 从VB 的 观 点 简 要 介 绍 这 些 缩 写 词 的 含 义 和 各 种 数 据 访 问 方 法 的 功 能 比 较。

Visual Basic 访 问 数 据 库 的 前 景

---- 近 来 随 着Web 应 用 软 件 的 迅 速 发 展 和 现 有 数 据 存 储 形 式 的 多 种 多 样,Visual Basic 访 问 数 据 库 的 解 决 方 案 面 临 诸 如 快 速 提 取 分 布 于 企 业 内 部 和 外 部 有 用 商 业 信 息 等 的 多 种 挑 战。 为 此Microsoft 提 出 一 种 新 的 数 据 库 访 问 策 略, 即“ 统 一 数 据 访 问”(Universal Data Access) 的 策 略。“ 统 一 数 据 访 问” 提 供 了 高 性 能 的 存 取 包 括 关 系 型 和 非 关 系 型 在 内 的 多 种 数 据 源, 提 供 独 立 于 开 发 工 具 和 开 发 语 言 的 简 单 的 编 程 接 口, 这 些 技 术 使 得 企 业 集 成 多 种 数 据 源、 选 择 更 好 的 开 发 工 具、 应 用 软 件、 操 作 平 台、 建 立 容 易 维 护 的 解 决 方 案 成 为 可 能。

---- “ 统 一 数 据 访 问” 的 基 础 是Microsoft 的 数 据 访 问 组 件。 这 些 组 件 包 括ActiveX Data Objects(ADO)、Remote Data Service(RDS, 也 称“ 高 级 数 据 连 接 器 或”ADC)、OLE DB 和ODBC。

 

表 三

数据访问接口 功能及含义
ADC 高级数据连接器(Advanced Data Connector):提供绑定ADO数据源到窗体的数据绑定控件上。ADC主要是一种直接访问或者通过ADO访问远程OLE DB对象的一种技术,它也支持主要应用在微软IE浏览器上的数据绑定控件。它是特地为Web上的浏览器为基础的应用程序而设计的。
ADO Active数据对象(Active Data Objects):ADO实际是一种提供访问各种数据类型的连接机制。ADO设计为一种极简单的格式,通过ODBC的方法同数据库接口。可以使用任何一种ODBC数据源,即不止适合于SQL Server、Oracle、Access等数据库应用程序,也适合于Excel表格、文本文件、图形文件和无格式的数据文件。ADO是基于OLE-DB之上的技术,因此ADO通过其内部的属性和方法提供统一的数据访问接口方法。
DAO 数据访问对象(Data Access Objects):是一种面向对象的界面接口。通过DAO/Jet功能可以访问ISAM数据库,使用DAO/ODBC Direct功能可以实现远程RDO功能。使用DAO的程序编码非常简单,DAO提供丰富的游标(Cursor)类型的结果集和非游标(Cursor-Less)类型的结果集,同DDL(数据描述语言)的功能很类似。DAO模型是设计关系数据库系统结构的对象类的集合。它们提供了完成管理这样一个系统所需的全部操作的属性和方法,包括创建数据库,定义表、字段和索引,建立表间的关系,定位和查询数据库等工具。
Jet 数据连接性引擎技术(Joint Engine Technology):是一种基于工作站通过DAO的数据库访问机制。虽然可以通过微软Access提供的ODBC驱动程序访问Jet数据库,但使用这些驱动程序在功能上有所限制。Jet机制有自己的查询和结果集处理功能,并可对同种或异种数据源作查询处理。
ODBC 开放式的数据库连接(Open Database Connectivity):是一种公认的关系数据源的接口界面。它快而轻并且提供统一接口的界面,ODBC对任何数据源都未作优化。
ODBC Direct 是一种基于DAO对象的新的DAO模式,其方法和属性与RDO功能相同。使用在有DAO代码存在的场合,可用来访问远程数据源。
OLE DB 是一种底层数据访问界面接口。是用于第三方驱动程序商家开发输出数据源到ADO-技术的应用程序或用于C++的开发者开发定制的数据库组件。OLE DB不能被VB直接调用。
RDC 远程数据访问控件(RemoteData Control):是一种对RDO数据绑定的控件。可以输出特定的结果集到数据源控件。
RDO 远程数据对象(RemoteData Objects):远程数据对象和集合为使用代码来创建和操作一个远程ODBC数据库系统的各个部件提供了一个框架。对象和集合都具有描述数据库的各个部件特征的属性以及用来操作这些部件的方法。可以在对象和集合之间建立起关系,这些关系就代表了数据库系统的逻辑结构。RDO是ODBC API的一个浅层界面接口。是专为访问远程ODBC关系数据源而设计的。
VBSQL 是Visual Basic结构化查询语言。是一种基于API的接口方法,几乎与C的DB-Library API相同。VBSQL只支持微软的SQL Server。VBSQL快而且轻但不支持对象界面。
 

知/的/更/多 做/的/更/好